package org.aspire.math;

public final class MathUtil {

	// ========================================================================
	// Constants
	// ========================================================================

	// ========================================================================
	// Static Methods
	// ========================================================================

	public static double atan2(double y, double x) {
		double coeff1 = Math.PI / 4d;
		double coeff2 = 3d * coeff1;
		double absY = Math.abs(y);
		double angle;
		
		if(x >= 0d) {
			double r = (x - absY) / (x + absY);
			angle = coeff1 - coeff1 * r;
		} else {
			double r = (x + absY) / (x - absY);
			angle = coeff2 - coeff1 * r;
		}
		
		return y < 0d ? -angle : angle;
	}
	
	// ========================================================================
	// Fields
	// ========================================================================

	// ========================================================================
	// Constructors
	// ========================================================================

	protected MathUtil() {
		
	}
	
	// ========================================================================
	// Getters & Setters
	// ========================================================================

	// ========================================================================
	// Override Methods
	// ========================================================================

	// ========================================================================
	// Methods
	// ========================================================================

	// ========================================================================
	// Inner & Anonymous Classes
	// ========================================================================
}
